package com.ling.dataStructures.head;

/**
 * @author: ling007
 * @date: 2025/2/7 16:15
 * @description: 堆接口
 * Java泛型中的标记含义
 * E: 元素的类型
 * K: 元素的关键字类型
 * V: 元素的值类型
 * N: 元素的数量
 */
public interface IHeap <E>{

    /**
     * 添加元素
     * @param e 元素
     * @return 是否添加成功
     * 添加失败时会抛异常
     */
    boolean add(E e);

    /**
     * 添加元素
     * @param e 元素
     * @return 是否添加成功
     * 添加失败返回false
     */
    boolean offer(E e);

    /**
     * 删除并返回堆顶元素
     * @return 堆顶元素
     */
    E poll();

    /**
     * 返回堆顶元素
     * @return 堆顶元素
     */
    E peek();
}
